/* Copyright (c) 2010, Carl Burch. License information is located in the
 * com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.gray;

import java.util.Arrays;
import java.util.List;

import com.cburch.logisim.tools.AddTool;
import com.cburch.logisim.tools.Library;

/** The library of components that the user can access. */
public class Components extends Library {
	/**
	 * The list of all tools contained in this library. Technically, libraries
	 * contain tools, which is a slightly more general concept than components;
	 * practically speaking, though, you'll most often want to create AddTools for
	 * new components that can be added into the circuit.
	 */
	private List<AddTool> tools;

	/**
	 * Constructs an instance of this library. This constructor is how Logisim
	 * accesses first when it opens the JAR file: It looks for a no-arguments
	 * constructor method of the user-designated class.
	 */
	public Components() {
		tools = Arrays.asList(new AddTool[] { new AddTool(new GrayIncrementer()), new AddTool(new SimpleGrayCounter()),
				new AddTool(new GrayCounter()), });
	}

	/** Returns the name of the library that the user will see. */
	@Override
	public String getDisplayName() {
		return "Gray Tools";
	}

	/** Returns a list of all the tools available in this library. */
	@Override
	public List<AddTool> getTools() {
		return tools;
	}
}
